package com.mayikt;

import java.util.ArrayList;

/**
 * @ClassName VolatileAtomThread
 * @Author 蚂蚁课堂余胜军 QQ644064779 www.mayikt.com
 * @Version V1.0
 **/
public class VolatileAtomThread {
    // 共享的全局变量
    private volatile static int count = 0;

    /**
     * 一定会小于10000
     */
    public static void create() {
        count++;
    }

    public static void main(String[] args) {
        ArrayList<Thread> threads = new ArrayList<>();
        // 10次 10个线程 每个线程执行1000次
        for (int i = 0; i < 10; i++) {
            Thread tempThread = new Thread(() -> {
                for (int j = 0; j < 1000; j++) {
                    create();
                }
            });
            threads.add(tempThread);
            tempThread.start();
        }
        threads.forEach((t)-> {
            try {
                // 主线释放锁同时放弃cpu执行前 等待前面10个线程执行完毕
                t.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });
        // 如何等待前面10个线程执行完毕的情况下，在去执行打印Count操作
        // 100001 10002
        System.out.println(count);
    }
}
